<?php
/**
 * @name SamplePlugin
 * @desc Yaf定义了如下的6个Hook,插件之间的执行顺序是先进先Call
 * @see http://www.php.net/manual/en/class.yaf-plugin-abstract.php
 * @author xmwg6125\ccuser
 */
class SamplePlugin extends \Yaf\Plugin_Abstract {

	public function routerStartup(\Yaf\Request_Abstract $request, \Yaf\Response_Abstract $response) {
//        echo "routerStartup\n";
    }

    public function routerShutdown(Yaf\Request_Abstract $request, Yaf\Response_Abstract $response)
    {
        // 初始化变量，存储请求开始时间
        \Yaf\Registry::set('start_time', microtime(true));
    }

	public function dispatchLoopStartup(\Yaf\Request_Abstract $request, \Yaf\Response_Abstract $response) {
//        echo "dispatchLoopStartup\n";
	}

	public function preDispatch(\Yaf\Request_Abstract $request, \Yaf\Response_Abstract $response) {
//        echo "preDispatch\n";
    }

	public function postDispatch(\Yaf\Request_Abstract $request, \Yaf\Response_Abstract $response) {
//        echo "postDispatch\n";
	}

	public function dispatchLoopShutdown(\Yaf\Request_Abstract $request, \Yaf\Response_Abstract $response) {
//        echo "dispatchLoopShutdown\n";

//        // 获取控制器返回的数据
//        $body = $response->getBody();
//
//        // 如果 $body 为空，不做处理
//        if (empty($body)) {
//            return;
//        }
//
//        // 封装成统一的 JSON 响应格式
//        $data = [
//            'code' => 0,
//            'data'   => json_decode($body, true),
//            'time'   => microtime(true) - \Yaf\Registry::get('start_time'), // 计算请求处理时间
//        ];
//
//        // 设置新的 JSON 响应内容
//        $response->setBody(json_encode($data));
//        $response->setHeader('Content-Type', 'application/json');
	}

    public function preResponse(\Yaf\Request_Abstract $request, \Yaf\Response_Abstract $response)
    {
        echo "preResponse\n";
    }

}
